using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;
using TestImport.Printen;
using System.Data.SqlClient;
using System.Drawing.Text;
using CPrintReportStringDemo;
using System.Collections;

namespace TestImport.Lijsten
{
    public partial class LijstenOverzicht : Form
    {
        private SqlConnection con;
        private SqlCommand com;
        private SqlDataReader reader;
      

        public LijstenOverzicht()
        {
            InitializeComponent();
            this.BackColor = InstParameters.Default.schermkleur;
            con = new SqlConnection(Properties.Settings.Default.TestImportConnectionString);
            
        }

        private void InitScherm()
        {
            chkExtraTitel.Checked = false;
            chkDatum.Checked = true;
            txtExtraTitel.Enabled = false;
            rbtRasterGeen.Checked = true;
            rbtScherm.Checked = true;
            btnMaakLijst.Text = "Maak lijst " + tabControl.TabPages[0].Text;
            initLijstBoeken();
            initLeerlingInfo();
            initBoekInfo();
        }

        private void LijstenOverzicht_Load(object sender, EventArgs e)
        {
            this.categorieTableAdapter.Fill(this.onsBoekenPakketDataSet.Categorie);
            this.boekTableAdapter.FillByIsUitBoeklijst(this.onsBoekenPakketDataSet.Boek);
            boekBindingSource.Sort = "Titel";
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.Leerling' table. You can move, or remove it, as needed.
            this.leerlingTableAdapter.Fill(this.onsBoekenPakketDataSet.Leerling);
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.Groep' table. You can move, or remove it, as needed.
            this.groepTableAdapter.Fill(this.onsBoekenPakketDataSet.Groep);
            PrintDocument printDoc = new PrintDocument();
            String pkInstalledPrinters;
            int defaultPrinterIndex = 0;
            for (int i = 0; i < PrinterSettings.InstalledPrinters.Count; i++)
            {
                pkInstalledPrinters = PrinterSettings.InstalledPrinters[i];
                printDoc.PrinterSettings.PrinterName = pkInstalledPrinters;
                if (printDoc.PrinterSettings.IsDefaultPrinter) defaultPrinterIndex = i;
                cmbPrinter.Items.Add(pkInstalledPrinters);
            }
            
            cmbPrinter.SelectedIndex = defaultPrinterIndex;
            InitScherm();
        }

        private void chkDatum_CheckedChanged(object sender, EventArgs e)
        {
            if (chkDatum.Checked) dtpDatum.Enabled = true;
            else dtpDatum.Enabled = false;
        }

        private void chkExtraTitel_CheckedChanged(object sender, EventArgs e)
        {
            if (chkExtraTitel.Checked) txtExtraTitel.Enabled = true;
            else txtExtraTitel.Enabled = false;
        }

        private void tabControl_SelectedIndexChanged(object sender, EventArgs e)
        {
            btnMaakLijst.Text = "Maak lijst " + tabControl.TabPages[tabControl.SelectedIndex].Text;
        }

        private bool HorizontaleLijnen()
        {
            return (rbtRasterBeide.Checked || rbtRasterHorizontaal.Checked);
        }

        private string zetDecimalenOp2(string getal)
        {
            string[] hulp = getal.Split(',');
            if (hulp.Length == 1) return getal + ",00";
            if (hulp.Length == 2)
            {
                if (hulp[1].Length < 2) return getal + "0";
                else return getal.Substring(0, getal.Length - 1);
            }
            return getal;
        }


        private void btnMaakLijst_Click(object sender, EventArgs e)
        {
            switch (tabControl.SelectedIndex)
            {
                case 0: maakLijstBoeken();
                    break;
                case 1: maakLeerlingInfo();
                    break;
                case 2: maakBoekInfo();
                    break;
                default: MessageBox.Show("In constructie!!");
                    break;
            }           
        }

        #region Lijst boeken

        private void initLijstBoeken()
        {
            rbtAlleBoeken.Checked = true;
            rbtSortTitel.Checked = true;
            rbtGroepGeen.Checked = true;
            chkGroepNieuwePagina.Enabled = false;
        }

        private void rbtGroepGeen_CheckedChanged(object sender, EventArgs e)
        {
            if (!rbtGroepGeen.Checked) chkGroepNieuwePagina.Enabled = true;
            else
            {
                chkGroepNieuwePagina.Enabled = false;
                chkGroepNieuwePagina.Checked = false;
            }
        }

        private void rbtBoekenNietMeerInLijst_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtBoekenNietMeerInLijst.Checked)
                rbtSortUitgever.Enabled = false;
            else
                rbtSortUitgever.Enabled = true;
        }

        private void maakLijstBoeken()
        {
            // query
            string queryTekstBasis = "SELECT titel, isbnNr, categorieCode, uitgeverNaam, groepCode, huurPrijs, schoolPrijs, huurboek, categorieCodeBoeklijst, boeksoortCode, aBoek FROM LijstBoeken";
            string queryTekstBasisUniek = "SELECT DISTINCT titel, isbnNr, categorieCode, uitgeverNaam, huurboek, boeksoortCode, aBoek FROM LijstBoeken";
            string queryUitteVoeren = queryTekstBasisUniek;
            if (rbtGroepBoekenlijst.Checked || rbtBoekenZonderPrijs.Checked)
                queryUitteVoeren = queryTekstBasis;
            if (rbtHuurBoeken.Checked) queryUitteVoeren = queryUitteVoeren + " WHERE huurboek = 1";
            if (rbtKoopBoeken.Checked) queryUitteVoeren = queryUitteVoeren + " WHERE huurboek = 0";
            if (rbtNietPlatoBoeken.Checked) queryUitteVoeren = queryUitteVoeren += " WHERE aBoek = 0";
            if (rbtBoekenZonderPrijs.Checked) queryUitteVoeren = queryUitteVoeren + 
                  " WHERE (huurboek = 1 AND huurPrijs = 0) OR (huurboek = 0 AND schoolPrijs = 0)";
            if (rbtBoekenNietMeerInLijst.Checked)
                queryUitteVoeren = "SELECT BoeklijstItem.categorieCode, BoeklijstItem.isbnNr, BoeklijstItem.titel, Boeklijst.groepCode "+
                                   "FROM  BoeklijstItem INNER JOIN Boeklijst ON BoeklijstItem.boeklijstID = Boeklijst.boeklijstID "+
                                   "WHERE (BoeklijstItem.isbnNr NOT IN (SELECT isbnNr FROM boek))";
            // sorteren - groeperen
            string sortString = " ";
            if (rbtGroepGeen.Checked)
            {
                if (rbtSortTitel.Checked) sortString = " ORDER BY titel";
                if (rbtSortUitgever.Checked) sortString = " ORDER BY uitgeverNaam, titel";
                if (rbtSortCategorie.Checked) sortString = " ORDER BY categorieCode, titel";
            }
            if (rbtGroepBoekenlijst.Checked)
            {
                if (rbtSortTitel.Checked) sortString = " ORDER BY groepCode, titel";
                if (rbtSortUitgever.Checked) sortString = " ORDER BY groepCode, uitgeverNaam, titel";
                if (rbtSortCategorie.Checked) sortString = " ORDER BY groepCode, categorieCode, titel";
            }
            if (rbtGroepCategorie.Checked)
            {
                if (rbtSortTitel.Checked) sortString = " ORDER BY categorieCode, titel";
                if (rbtSortUitgever.Checked) sortString = " ORDER BY categorieCode, uitgeverNaam, titel";
                if (rbtSortCategorie.Checked) sortString = " ORDER BY categorieCode, titel";
            }
            queryUitteVoeren += sortString;

            //outputstring
            string hoofding = "Titel".PadRight(75) + "Isbnnr".PadRight(15) + "Uitgever".PadRight(20) + "Categorie".PadRight(11);
            List<int> afstanden = new List<int>();
            if (rbtBoekenNietMeerInLijst.Checked)
            {
                afstanden.Add(75); afstanden.Add(15); afstanden.Add(11);
                hoofding = "Titel".PadRight(75) + "Isbnnr".PadRight(15) + "Categorie".PadRight(11);
            }
            else
                afstanden.Add(75); afstanden.Add(15); afstanden.Add(20); afstanden.Add(11);
            string lijn = "";   
            StringBuilder sb = new StringBuilder();
            com = new SqlCommand(queryUitteVoeren, con);
            try
            {
                con.Open();
                reader = com.ExecuteReader();
                if (rbtGroepGeen.Checked)
                {
                    while (reader.Read())
                    {
                        if (rbtBoekenNietMeerInLijst.Checked)
                            lijn = reader["titel"].ToString().PadRight(75) + reader["isbnNr"].ToString().PadRight(15) + reader["categorieCode"].ToString().PadRight(11) + Environment.NewLine;
                        else
                            lijn = reader["titel"].ToString().PadRight(75) + reader["isbnNr"].ToString().PadRight(15) + reader["uitgeverNaam"].ToString().PadRight(20) + reader["categorieCode"].ToString().PadRight(11) + Environment.NewLine;
                        sb.Append(lijn);
                    }
                }

                if (rbtGroepCategorie.Checked)
                {
                    int blznr = 0;
                    string vorigeCategorie = "???";
                    while (reader.Read())
                    {
                        if (!reader["categorieCode"].ToString().Equals(vorigeCategorie))
                        {
                            vorigeCategorie = reader["categorieCode"].ToString();
                            if (chkGroepNieuwePagina.Checked && blznr > 0)
                            {
                                lijn = "<:NEWPAGE>" + Environment.NewLine;
                                sb.Append(lijn);
                            }
                            lijn = "<:FONTBOLD>" + Environment.NewLine;
                            lijn += Environment.NewLine+"Categorie: " + vorigeCategorie.ToUpper() + Environment.NewLine + Environment.NewLine;
                            lijn += "<:FONTNORMAL>" + Environment.NewLine;
                            sb.Append(lijn);
                            blznr++;
                        }
                        if (rbtBoekenNietMeerInLijst.Checked)
                            lijn = reader["titel"].ToString().PadRight(75) + reader["isbnNr"].ToString().PadRight(15) + reader["categorieCode"].ToString().PadRight(11) + Environment.NewLine;
                        else
                            lijn = reader["titel"].ToString().PadRight(75) + reader["isbnNr"].ToString().PadRight(15) + reader["uitgeverNaam"].ToString().PadRight(20) + reader["categorieCode"].ToString().PadRight(11) + Environment.NewLine;
                        sb.Append(lijn);
                    }
                }

                if (rbtGroepBoekenlijst.Checked)
                {
                    int blznr = 0;
                    string vorigeBoekenlijst = "???";
                    while (reader.Read())
                    {
                        if (!reader["groepCode"].ToString().Equals(vorigeBoekenlijst))
                        {
                            vorigeBoekenlijst = reader["groepCode"].ToString();
                            if (chkGroepNieuwePagina.Checked && blznr > 0)
                            {
                                lijn = "<:NEWPAGE>" + Environment.NewLine;
                                sb.Append(lijn);
                            }
                            lijn = "<:FONTBOLD>" + Environment.NewLine;
                            lijn += Environment.NewLine + "Boekenlijst: " + vorigeBoekenlijst.ToUpper() + Environment.NewLine + Environment.NewLine;
                            lijn += "<:FONTNORMAL>" + Environment.NewLine;
                            sb.Append(lijn);
                            blznr++;
                        }
                        if (rbtBoekenNietMeerInLijst.Checked)
                            lijn = reader["titel"].ToString().PadRight(75) + reader["isbnNr"].ToString().PadRight(15) + reader["categorieCode"].ToString().PadRight(11) + Environment.NewLine;
                        else
                            lijn = reader["titel"].ToString().PadRight(75) + reader["isbnNr"].ToString().PadRight(15) + reader["uitgeverNaam"].ToString().PadRight(20) + reader["categorieCode"].ToString().PadRight(11) + Environment.NewLine;
                        sb.Append(lijn);
                    }
                }
                reader.Close();
                //MessageBox.Show(sb.ToString());
                con.Close();
                if (txtOpmerking.Text.Length > 0)
                {
                    if (!rbtGroepGeen.Checked)
                    {
                        lijn = "<:NEWPAGE>" + Environment.NewLine;
                        lijn += "<:FONTBOLD>" + Environment.NewLine;
                        lijn += Environment.NewLine + txtOpmerking.Text;
                    }
                    else
                    {
                        lijn = "<:FONTBOLD>" + Environment.NewLine;
                        lijn += Environment.NewLine + txtOpmerking.Text;
                    }
                    sb.Append(lijn);
                }
            }
            catch (Exception ex) {MessageBox.Show(ex.Message);}

            //titel
            string lijstTitel = "Lijst boeken ";
           
            if (rbtHuurBoeken.Checked) lijstTitel+= " (alleen huurboeken)";
            if (rbtKoopBoeken.Checked) lijstTitel += " (alleen koopboeken)";
            if (rbtNietPlatoBoeken.Checked) lijstTitel += " (alleen niet PLATO boeken)";
            if (rbtBoekenZonderPrijs.Checked) lijstTitel+= " (boeken zonder prijs)";
            if (rbtBoekenNietMeerInLijst.Checked) lijstTitel = "Boeken die niet meer voorkomen in PLATO boekenlijst";
            if (rbtSortTitel.Checked && !rbtBoekenNietMeerInLijst.Checked) lijstTitel += " Gesorteerd alfabetisch op titel";
            if (rbtSortUitgever.Checked) lijstTitel += " Gesorteerd op uitgever";
            if (rbtSortCategorie.Checked && !rbtBoekenNietMeerInLijst.Checked) lijstTitel += " Gesorteerd op categorie";
            if (rbtGroepCategorie.Checked) lijstTitel += " Gegroepeerd per categorie";
            if (rbtGroepBoekenlijst.Checked) lijstTitel += " Gegroepeerd per boekenlijst";

            toonLijst(sb,hoofding,afstanden,lijstTitel);
        }
        #endregion

        #region LeerlingInfo

        private void initLeerlingInfo()
        {
            rbtSpecifiekeLeerling.Checked = true;
            try
            {
                cmbGroep.SelectedItem = 0;
                cmdGroep2.SelectedItem = 0;
                cmdGroep2_SelectedIndexChanged(null, null);
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            rbtAlleInfo.Checked = true;
            gpbSecifiekeInfo.Enabled = false;
            rbtAlleRekeningen.Checked = true;
            rbtGeenRetourInfo.Checked = true;
        }

        private void cmdGroep2_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                string vgroep = cmdGroep2.SelectedValue.ToString();
                leerlingBindingSource.RemoveFilter();
                leerlingBindingSource.Filter = "groepCode = " + "'" + vgroep + "'";
                leerlingBindingSource.Sort = "naam";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message);}
        }

        private void rbtSpecifiekeLeerling_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtSpecifiekeLeerling.Checked) { chkLeerlingNieuwePagina.Enabled = false; chkGroepjeNieuwePagina.Enabled = false; }
            else chkLeerlingNieuwePagina.Enabled = true;
        }

        private void rbtAlleLeerlingen_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtAlleLeerlingen.Checked) { chkLeerlingNieuwePagina.Enabled = true; chkGroepjeNieuwePagina.Enabled = true; }

        }

        private void rbtSpecifiekeGroep_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtSpecifiekeGroep.Checked) { chkLeerlingNieuwePagina.Enabled = true; chkGroepjeNieuwePagina.Enabled = false; }
        }

        private void rbtSpecifiekeInfo_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtSpecifiekeInfo.Checked) gpbSecifiekeInfo.Enabled = true;
            else gpbSecifiekeInfo.Enabled = false;
            
        }

        private void rbtGeenInfo_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtGeenInfo.Checked)
            {
                chkAfhaaldata.Checked = false;
                chkBesteldata.Checked = false;
                chkRetourdata.Checked = false;
                chkAlleenHuurboeken.Checked = false;
                chkAlleenHuurboeken.Enabled = false;
            }
            else
            {
                chkAlleenHuurboeken.Enabled = true;
                rbtGeenRetourInfo.Checked = true;
            }
        }

        private void rbtGeenRekeningInfo_CheckedChanged(object sender, EventArgs e)
        {
            if (!rbtGeenRekeningInfo.Checked) rbtGeenRetourInfo.Checked = true;
        }

        private void rbtRetourAlleenHuurboek_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtRetourAlleenHuurboek.Checked) chkAlleenHuurboeken.Checked = true;
            else chkAlleenHuurboeken.Checked = false;
        }

        private void rbtAlleInfo_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtAlleInfo.Checked)
            {
                chkAfhaaldata.Checked = true;
                chkBesteldata.Checked = true;
                chkRetourdata.Checked = true;
            }
        }

        private void rbtGeenRetourInfo_CheckedChanged(object sender, EventArgs e)
        {
            if (!rbtGeenRetourInfo.Checked)
            {
                rbtGeenInfo.Checked = true;
                rbtGeenRekeningInfo.Checked = true;
            }
        }

        private DataTable getRekeningInfo(int vLeerlingID)
        {
            DataTable dt = null;
            if (rbtAlleRekeningen.Checked)
                dt =rekeningLeerlingTableAdapter.GetDataByLeerlingID(vLeerlingID);
            if (rbtOnbetaaldeRekeningen.Checked)
                dt = rekeningLeerlingTableAdapter.GetDataNietBetaaldByLeerlingID(vLeerlingID);
           
            return dt;
        }

        private void maakLeerlingInfo()
        {
            // query
            string queryUitteVoeren = "SELECT  datumBestelling, datumAfhaling, datumAnnulatie, datumRetour,  status, leerlingID, naam, straat, gemeente, groepCode, categorieCode, isbnNr, titel, huurBoek FROM Lijst_Leerling_LeerlingBoek";
            if (rbtSpecifiekeLeerling.Checked)
                queryUitteVoeren += " WHERE leerlingID = " + cmbLeerling.SelectedValue.ToString() + " ORDER BY categorieCode, titel";
            if (rbtSpecifiekeGroep.Checked) queryUitteVoeren += " WHERE groepCode = " + "'"+cmbGroep.SelectedValue.ToString()+"'" + " ORDER BY leerlingID, categorieCode, titel";
            if (rbtAlleLeerlingen.Checked) queryUitteVoeren += " ORDER BY groepCode, leerlingID, categorieCode, titel";
            if (chkAlleenHuurboeken.Checked)
            {
                queryUitteVoeren = "SELECT  datumBestelling, datumAfhaling, datumAnnulatie, datumRetour,  status, leerlingID, naam, straat, gemeente, groepCode, categorieCode, isbnNr, titel, huurBoek FROM Lijst_Leerling_LeerlingBoek";
                
                if (rbtSpecifiekeLeerling.Checked)
                    queryUitteVoeren += " WHERE leerlingID = " + cmbLeerling.SelectedValue.ToString() + " AND huurboek = 1 ORDER BY categorieCode, titel";
                if (rbtSpecifiekeGroep.Checked) queryUitteVoeren += " WHERE groepCode = " + "'" + cmbGroep.SelectedValue.ToString() + "'" + " AND huurboek = 1 ORDER BY leerlingID, categorieCode, titel";
                if (rbtAlleLeerlingen.Checked) queryUitteVoeren += " WHERE huurboek = 1 ORDER BY groepCode, leerlingID, categorieCode, titel";
            }            
            //MessageBox.Show(queryUitteVoeren);
            //outputstring
            List <int> afstanden = new List<int>();
            afstanden.Add(75+11);
            if (!rbtGeenRetourInfo.Checked) afstanden.Add(7);
            string hoofding = "";//Titel".PadRight(75) + "Isbnnr".PadRight(15) + "Uitgever".PadRight(20) + "Categorie".PadRight(11);
            string lijn = "";
            bool metRekeningInfo = rbtAlleRekeningen.Checked || rbtOnbetaaldeRekeningen.Checked;
            

            
            StringBuilder sb = new StringBuilder();
           
                     
            com = new SqlCommand(queryUitteVoeren, con);
            try
            {
                con.Open();
                reader = com.ExecuteReader();
                maakLeerlingInfoLijst(sb,metRekeningInfo);
                reader.Close();
                con.Close();
            }
            catch (Exception ex) { con.Close(); MessageBox.Show(ex.Message); }
            if (txtOpmerking.Text.Length > 0)
            {
                if (chkLeerlingNieuwePagina.Checked)
                {
                    lijn = "<:NEWPAGE>" + Environment.NewLine;
                    lijn += "<:FONTBOLD>" + Environment.NewLine;
                    lijn += Environment.NewLine + txtOpmerking.Text;
                }
                else
                {
                    lijn = "<:FONTBOLD>" + Environment.NewLine;
                    lijn += Environment.NewLine + txtOpmerking.Text;
                }
                sb.Append(lijn);
            }
            string lijstTitel = "Leerling info";
            if (!rbtGeenRetourInfo.Checked) lijstTitel = "Te retourneren boeken";
            if (rbtSpecifiekeGroep.Checked) lijstTitel += " van groep " + cmbGroep.SelectedValue.ToString() + " ";
            if (rbtAlleRekeningen.Checked) lijstTitel+="(incl. Alle rekeningen)";
            if (rbtOnbetaaldeRekeningen.Checked) lijstTitel += "(incl. Onbetaalde rekeningen)";
            if (chkAlleenHuurboeken.Checked) lijstTitel += " - Alleen huurboeken";
            toonLijst(sb, hoofding, afstanden, lijstTitel);
        }

        private void maakLeerlingInfoLijst(StringBuilder sb,bool metRekeningInfo)
        {
            int blznr = 0;
            int vorigeLeerlingID = -88;
            string vorigeGroepCode = "????";
            string lijn = "";
            int aLijnen = 0;
            bool kanLijn = true;
            bool kanRekeningInfo = metRekeningInfo;
            string titelLijn = "";
            bool isNieuwePaginaGroep = false;
            DataTable dtRekeningen = null;
            string hulp = "";
            List <string> teRetourneren = new List <string> ();
           
            while (reader.Read())
            {
                kanRekeningInfo = false;
                isNieuwePaginaGroep = false;
                titelLijn = "Titel".PadRight(75 + 11);
                if (int.Parse(reader["leerlingID"].ToString()) != vorigeLeerlingID)
                {
                    dtRekeningen = getRekeningInfo(int.Parse(reader["leerlingID"].ToString()));
                    kanRekeningInfo = metRekeningInfo && (dtRekeningen.Rows.Count > 0);
                    hulp += int.Parse(reader["leerlingID"].ToString())+" "+kanRekeningInfo+Environment.NewLine;
                   
                }
                kanLijn =
                    (chkBesteldata.Checked && !reader["datumBestelling"].ToString().Equals(DBNull.Value.ToString())) ||
                    (chkRetourdata.Checked && !reader["datumRetour"].ToString().Equals(DBNull.Value.ToString())) ||
                    (chkAfhaaldata.Checked && !reader["datumAfhaling"].ToString().Equals(DBNull.Value.ToString()) ||
                    (!rbtGeenRetourInfo.Checked && !reader["datumAfhaling"].ToString().Equals(DBNull.Value.ToString()) && reader["datumRetour"].ToString().Equals(DBNull.Value.ToString())));
               
                if (kanLijn || kanRekeningInfo)
                {
                    if (!reader["groepCode"].ToString().Equals(vorigeGroepCode))
                    {
                        aLijnen = 0;
                        vorigeGroepCode = reader["groepCode"].ToString();
                        if (chkGroepjeNieuwePagina.Checked && blznr > 0)
                        {
                            lijn = "<:NEWPAGE>" + Environment.NewLine;
                            isNieuwePaginaGroep = true;
                            sb.Append(lijn);
                        }

                        //blznr++;
                    }
                    if (int.Parse(reader["leerlingID"].ToString()) != vorigeLeerlingID)
                    {
                        aLijnen = 0;
                        vorigeLeerlingID = int.Parse(reader["leerlingID"].ToString());
                        if (chkLeerlingNieuwePagina.Checked && blznr > 0 &&!isNieuwePaginaGroep)
                        {
                            lijn = "<:NEWPAGE>" + Environment.NewLine;
                            sb.Append(lijn);
                        }
                       
                        blznr++;
                    }
                    if (aLijnen == 0)
                    {
                        string groepString = "(Groep:" + vorigeGroepCode + ")";
                        lijn = reader["naam"].ToString().PadRight(25)+groepString.PadRight(14);
                        if (chkAdres.Checked)
                        {
                            lijn += reader["straat"].ToString().PadRight(25) + reader["gemeente"].ToString().PadRight(20);
                        }
                        if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                        sb.Append(Environment.NewLine+"*" + Environment.NewLine);
                        if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                        sb.Append("<:FONTBOLD>" + Environment.NewLine);
                        sb.Append(lijn + Environment.NewLine);
                        sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                        if (kanRekeningInfo)
                        {
                            string rekeningTitel = "Datum".PadRight(12) + "Bedrag".PadLeft(12) + "Betaald".PadLeft(12) + "Saldo".PadLeft(12);
                            if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                            sb.Append("<:FONTBOLD>" + Environment.NewLine);
                            sb.Append(rekeningTitel + Environment.NewLine );
                            sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                            if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                            foreach (DataRow rekening in dtRekeningen.Rows)
                            {
                                double saldo = double.Parse(rekening["totaal"].ToString()) - double.Parse(rekening["betaald"].ToString());
                                lijn = DateTime.Parse(rekening["datumRekening"].ToString()).ToShortDateString().PadLeft(12) + zetDecimalenOp2(rekening["totaal"].ToString()).PadLeft(12) + zetDecimalenOp2(rekening["betaald"].ToString()).PadLeft(12) + MijnLib.zetDecimalenOp2(saldo.ToString()).PadLeft(12);
                                sb.Append(lijn + Environment.NewLine);
                            }
                            
                            
                        }
                    }
                    aLijnen++;
                    if (kanLijn)
                    {
                        lijn = reader["titel"].ToString().PadRight(75) + reader["categorieCode"].ToString().PadRight(11);
                        if (rbtAlleInfo.Checked || (chkBesteldata.Checked))
                        {
                            if (aLijnen == 1) titelLijn += "Bestelling".PadLeft(12);
                            try { lijn += DateTime.Parse(reader["datumBestelling"].ToString()).ToShortDateString().PadLeft(12); }
                            catch (Exception) { lijn += "".PadLeft(12); }
                        }
                        if (rbtAlleInfo.Checked || (chkAfhaaldata.Checked))
                        {
                            if (aLijnen == 1) titelLijn += "Afhaling".PadLeft(12);
                            try { lijn += DateTime.Parse(reader["datumAfhaling"].ToString()).ToShortDateString().PadLeft(12); }
                            catch (Exception) { lijn += "".PadLeft(12); }
                        }
                        if (rbtAlleInfo.Checked || (chkRetourdata.Checked))
                        {
                            if (aLijnen == 1) titelLijn += "Retour".PadLeft(12);
                            try { lijn += DateTime.Parse(reader["datumRetour"].ToString()).ToShortDateString().PadLeft(12); }
                            catch (Exception) { lijn += "".PadLeft(12); }
                        }
                        if (!rbtGeenRetourInfo.Checked)
                        {
                            bool isHuurboek = false;
                            try 
                            { 
                                isHuurboek =  bool.Parse(reader["huurBoek"].ToString());
                                if (isHuurboek) lijn += "HUUR";
                                else lijn += "KOOP";
                            }
                            catch (Exception) {  }
                        }
                        lijn += Environment.NewLine;
                        if (aLijnen == 1)
                        {
                            if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                            sb.Append("<:FONTBOLD>" + Environment.NewLine);
                            sb.Append(titelLijn + Environment.NewLine);
                            sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                            if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                        }
                        sb.Append(lijn);
                    }//endifkanlijn
                }//endif kanlijn of kanprint
              
            }
          //  MessageBox.Show(hulp);
        }
        #endregion

        #region BoekInfo

        private void initBoekInfo()
        {
            rbtSpecifiekBoek.Checked = true;
            rbtLeerlingInfoLijst.Checked = true;
            rrbtSorteerTitel.Checked = true;
            rbtSpecifiekBoek_CheckedChanged(null, null);
            rrbtSorteerTitel_CheckedChanged(null, null);
            rbtVoorraadLijst_CheckedChanged(null, null);
            rbtNogTeLeverenLijst_CheckedChanged(null, null);
        }

        private void rbtSpecifiekBoek_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtSpecifiekBoek.Checked)
            {
                gpbWelkeBoekenlijst.Enabled = false;
                gpbSortBoekenlijst.Enabled = false;
            }
            else
            {
                gpbWelkeBoekenlijst.Enabled = true;
                gpbSortBoekenlijst.Enabled = true;
            }
        }

        private void rrbtSorteerTitel_CheckedChanged(object sender, EventArgs e)
        {
            if (rrbtSorteerTitel.Checked)
            {
                chkNieuwBladPerGroep.Checked = false;
                chkNieuwBladPerGroep.Enabled = false;
            }
            else
            {
                chkNieuwBladPerGroep.Enabled = true;
            }
        }

        private void rbtVoorraadLijst_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtVoorraadLijst.Checked) chkAlleenPositieveVoorraad.Enabled = true;
            else chkAlleenPositieveVoorraad.Enabled = false;
        }

        private void rbtNogTeLeverenLijst_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtNogTeLeverenLijst.Checked) chkAlleenPositieveNogTeLeveren.Enabled = true;
            else chkAlleenPositieveNogTeLeveren.Enabled = false;
        }

        private void txtDeelTitel_TextChanged(object sender, EventArgs e)
        {
            string text = txtDeelTitel.Text.Replace("\'", "\'\'");
            string filterTekst = "Titel like \'%" + (text + "%\'");
            this.boekBindingSource.Filter = filterTekst;
            gbFilter.Text = "Deel van titel " + text.ToUpper();
        }

        private void cmbCategorie_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                String zoek = cmbCategorie.SelectedValue.ToString();
                string filterTekst = "CategorieCode = " + "'" + zoek + "'";
                this.boekBindingSource.Filter = filterTekst;
                gbFilter.Text = " Categorie " + zoek.ToUpper();
            }
            catch (Exception ex) { ;}
        }

        private void cmbGroepBoekInfo_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                this.boekBindingSource.Filter = "boekID < -9999";
                int boeklijstID = -1;
                foreach (DataRow dr in boeklijstTableAdapter.GetGroepCodeID(cmbGroepBoekInfo.SelectedValue.ToString()))
                {
                    boeklijstID = (int)dr["boeklijstID"];
                }
                
                List<int> boekIDs = new List<int>();
                if (boeklijstID != -1)
                {

                    foreach (DataRow dr in boeklijstItemTableAdapter.GetDataByBoeklijstID(boeklijstID))
                        boekIDs.Add((int)dr["boekID"]);
                    
                }
                int teller = 0;
               
                String filterTekstH = "(boekID = ";
                foreach (int i in boekIDs)
                {
                    filterTekstH += i;
                    if (++teller < boekIDs.Count)
                    {
                        filterTekstH += " or boekID = ";
                    }
                    else
                    {
                        filterTekstH += ")";
                    }
                }
                //Text = filterTekstH;

                this.gbFilter.Text = "Boekenlijst van groep " + cmbGroepBoekInfo.SelectedValue.ToString();
                this.boekBindingSource.Filter = filterTekstH;
                
            }
            catch (Exception ex) { ;}
           
        }

        private void maakBoekInfo()
        {
            if (rbtSpecifiekBoek.Checked)
            {
                int vBoekID = int.Parse(boekDataGridView.CurrentRow.Cells["dgvBoekID"].Value.ToString());
                // queries
                string queryLeerlingBoek = "SELECT  datumBestelling, datumAfhaling, datumAnnulatie, datumRetour,  status, leerlingID, naam, straat, gemeente, groepCode, categorieCode, isbnNr, titel, huurBoek FROM Lijst_Leerling_LeerlingBoek WHERE boekID = " + vBoekID + " ORDER BY naam, leerlingID";
                string queryVoorraad = "SELECT voorraad1, reserve FROM boek WHERE boekID = " + vBoekID;
                string queryBestelling = "SELECT datumBestelling,isPlato, isRetour, isAnnulatie, bestellingNaam, opmerkingIntern, aantalBesteld FROM LijstBestellingen WHERE boekID = " + vBoekID + " ORDER BY datumBestelling";
                string queryLevering = "SELECT datumLevering ,isPlato, leveringNaam, opmerking, aantal FROM LijstLevering WHERE boekID = " + vBoekID + " ORDER BY datumLevering";
                //outputstring
                List<int> afstanden = new List<int>();
                string lijstTitel = "BoekInfo";
                //afstanden.Add(75); afstanden.Add(15); afstanden.Add(20); afstanden.Add(11);
                string hoofding = "";
                string lijn = "";
                int aLijnen = 0;
                bool kanLijn = true;
                string titelLijn = "Leerling".PadRight(35) + "Bestelling".PadLeft(12) + "Afhaling".PadLeft(12) + "Retour".PadLeft(12);
                StringBuilder sb = new StringBuilder();
                //boekbeschrijving
                string boekinfo = boekDataGridView.CurrentRow.Cells["dgvIsbnNr"].Value.ToString().PadRight(15) + boekDataGridView.CurrentRow.Cells["dgvCategorie"].Value.ToString().PadRight(10) +
                    boekDataGridView.CurrentRow.Cells["dgvTitel"].Value.ToString();
                if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                sb.Append("<:FONTBOLD>" + Environment.NewLine);
                sb.Append(boekinfo + Environment.NewLine + Environment.NewLine);
                sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                //leerlingInfo
                int aBesteld = 0;
                int aRetour = 0;
                int aAfgehaald = 0;
                aLijnen = 0;
                if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                sb.Append("<:FONTBOLD>" + Environment.NewLine);
                sb.Append("Bestellingen, afhalingen en retours van leerlingen" + Environment.NewLine);
                sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                com = new SqlCommand(queryLeerlingBoek, con);
                try
                {
                    con.Open();
                    reader = com.ExecuteReader();
                    while (reader.Read())
                    {
                        kanLijn =
                        (!reader["datumBestelling"].ToString().Equals(DBNull.Value.ToString())) ||
                        (!reader["datumRetour"].ToString().Equals(DBNull.Value.ToString())) ||
                        (!reader["datumAfhaling"].ToString().Equals(DBNull.Value.ToString()));

                        if (kanLijn)
                        {
                            aLijnen++;
                            lijn = reader["naam"].ToString().PadRight(25) + reader["groepCode"].ToString().PadRight(10);
                            try { lijn += DateTime.Parse(reader["datumBestelling"].ToString()).ToShortDateString().PadLeft(12); aBesteld++; }
                            catch (Exception) { lijn += "".PadLeft(12); }
                            try { lijn += DateTime.Parse(reader["datumAfhaling"].ToString()).ToShortDateString().PadLeft(12); aAfgehaald++; }
                            catch (Exception) { lijn += "".PadLeft(12); }
                            try { lijn += DateTime.Parse(reader["datumRetour"].ToString()).ToShortDateString().PadLeft(12); aRetour++; }
                            catch (Exception) { lijn += "".PadLeft(12); }
                            lijn += Environment.NewLine;
                            if (aLijnen == 1)
                            {
                                if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                                sb.Append("<:FONTBOLD>" + Environment.NewLine);
                                sb.Append(titelLijn + Environment.NewLine);
                                sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                                if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                            }
                            sb.Append(lijn);
                        }//endifkanlijn
                    }//endwhilereader
                    reader.Close();
                    con.Close();
                }//endcatch
                catch (Exception ex) { MessageBox.Show(ex.Message); con.Close(); }
                sb.Append("Totaal aantal besteld  : " + aBesteld.ToString().PadLeft(3) + Environment.NewLine);
                sb.Append("Totaal aantal afgehaald: " + aAfgehaald.ToString().PadLeft(3) + Environment.NewLine);
                sb.Append("Totaal aantal retour   : " + aRetour.ToString().PadLeft(3) + Environment.NewLine);
                sb.Append(Environment.NewLine);

                //bestellingen,retours plato
                int aBesteldPlato = 0;
                int aRetourPlato = 0;
                int aAnnulPlato = 0;
                aLijnen = 0;
                string typeBestelling = "Bestelling";
                int aantal = 0;
                titelLijn = "Datum".PadRight(11) + "Type".PadRight(15) + "Aantal".PadLeft(8);
                if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                sb.Append("<:FONTBOLD>" + Environment.NewLine);
                sb.Append("Bestellingen, annulaties, retours naar Plato" + Environment.NewLine);
                sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                com = new SqlCommand(queryBestelling, con);
                try
                {
                    con.Open();
                    reader = com.ExecuteReader();
                    kanLijn = reader.HasRows;
                    while (reader.Read())
                    {
                        aLijnen++;
                        lijn = DateTime.Parse(reader["datumBestelling"].ToString()).ToShortDateString().PadLeft(10) + " ";
                        typeBestelling = "Bestelling";
                        aantal = Math.Abs(int.Parse(reader["aantalBesteld"].ToString()));
                        if (bool.Parse(reader["isRetour"].ToString())) { typeBestelling = "Retour"; aRetourPlato += aantal; }
                        else
                        {
                            if (bool.Parse(reader["isAnnulatie"].ToString())) { typeBestelling = "Annulatie"; aAnnulPlato += aantal; }
                            else
                            { typeBestelling = "Bestelling"; aBesteldPlato += aantal; }
                        }
                        lijn += typeBestelling.PadRight(15) + reader["aantalBesteld"].ToString().PadLeft(8) + Environment.NewLine;
                        if (aLijnen == 1)
                        {
                            if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                            sb.Append("<:FONTBOLD>" + Environment.NewLine);
                            sb.Append(titelLijn + Environment.NewLine);
                            sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                            if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                        }
                        sb.Append(lijn);
                    }//endwhilereader
                    reader.Close();
                    con.Close();
                }//endcatch
                catch (Exception ex) { MessageBox.Show(ex.Message); con.Close(); }
                sb.Append("Totaal aantal besteld  : " + aBesteldPlato.ToString().PadLeft(3) + Environment.NewLine);
                sb.Append("Totaal aantal annulatie: " + aAnnulPlato.ToString().PadLeft(3) + Environment.NewLine);
                sb.Append("Totaal aantal retour   : " + aRetourPlato.ToString().PadLeft(3) + Environment.NewLine);
                sb.Append(Environment.NewLine);

                //Leveringen plato
                int aGeleverdPlato = 0;
                aLijnen = 0;
                aantal = 0;
                titelLijn = "Datum".PadRight(11) + "Aantal".PadLeft(8);
                if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                sb.Append("<:FONTBOLD>" + Environment.NewLine);
                sb.Append("Leveringen van Plato" + Environment.NewLine);
                sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                com = new SqlCommand(queryLevering, con);
                try
                {
                    con.Open();
                    reader = com.ExecuteReader();
                    kanLijn = reader.HasRows;
                    while (reader.Read())
                    {
                        aLijnen++;
                        lijn = DateTime.Parse(reader["datumLevering"].ToString()).ToShortDateString().PadLeft(10) + " ";
                        aantal = Math.Abs(int.Parse(reader["aantal"].ToString()));
                        aGeleverdPlato += aantal;

                        lijn += reader["aantal"].ToString().PadLeft(8) + Environment.NewLine;
                        if (aLijnen == 1)
                        {
                            if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                            sb.Append("<:FONTBOLD>" + Environment.NewLine);
                            sb.Append(titelLijn + Environment.NewLine);
                            sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                            if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                        }
                        sb.Append(lijn);
                    }//endwhilereader
                    reader.Close();
                    con.Close();
                }//endcatch
                catch (Exception ex) { MessageBox.Show(ex.Message); con.Close(); }
                sb.Append("Totaal aantal geleverd : " + aGeleverdPlato.ToString().PadLeft(3) + Environment.NewLine);
                sb.Append(Environment.NewLine);

                //Voorraad - nog te leveren
                aLijnen = 0;
                string titelLijn2 = "";
                titelLijn = "Start".PadLeft(14) + "Geleverd".PadLeft(14) + "Afgehaald".PadLeft(14) + "Retour".PadLeft(14) + "Retour".PadLeft(14) + "Huidige".PadLeft(14);// +Environment.NewLine;
                titelLijn2 = "voorraad".PadLeft(14) + "door Plato".PadLeft(14) + "door leerling".PadLeft(14) + "naar Plato".PadLeft(14) + "door leerling".PadLeft(14) + "voorraad".PadLeft(14);// +Environment.NewLine;
                if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                sb.Append("<:FONTBOLD>" + Environment.NewLine);
                sb.Append("Voorraad informatie" + Environment.NewLine);
                sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                com = new SqlCommand(queryVoorraad, con);
                try
                {
                    con.Open();
                    reader = com.ExecuteReader();
                    if (reader.HasRows)
                    {
                        reader.Read();
                        aLijnen++;
                        aantal = int.Parse(reader["voorraad1"].ToString());
                        int saldo = aantal + aGeleverdPlato - aAfgehaald - aRetourPlato + aRetour;
                        lijn = aantal.ToString().PadLeft(14) + aGeleverdPlato.ToString().PadLeft(14) + aAfgehaald.ToString().PadLeft(14) + aRetourPlato.ToString().PadLeft(14)+ aRetour.ToString().PadLeft(14) + saldo.ToString().PadLeft(14);
                        lijn += Environment.NewLine;
                        if (aLijnen == 1)
                        {
                            //if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                            sb.Append("<:FONTBOLD>" + Environment.NewLine);
                            sb.Append(titelLijn + Environment.NewLine);
                            if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                            sb.Append(titelLijn2 + Environment.NewLine);
                            sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                            if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                        }
                        sb.Append(lijn);
                    }//endif
                    reader.Close();
                    con.Close();
                }//endcatch
                catch (Exception ex) { MessageBox.Show(ex.Message); con.Close(); }
                sb.Append(Environment.NewLine);

                //nog te leveren
                aLijnen = 0;

                titelLijn = "Besteld".PadLeft(14) + "Geannulleerd".PadLeft(14) + "Geleverd".PadLeft(14) + "Te Leveren".PadLeft(14);
                //titelLijn2 = "voorraad".PadLeft(14) + "door Plato".PadLeft(14) + "door leerling".PadLeft(14) + "naar Plato".PadLeft(14) + "voorraad".PadLeft(14) + Environment.NewLine;
                if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                sb.Append("<:FONTBOLD>" + Environment.NewLine);
                sb.Append("Nog te leveren door Plato" + Environment.NewLine);
                sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                int saldo1 = aBesteldPlato - aAnnulPlato - aGeleverdPlato;
                if (saldo1 < 0) saldo1 = 0;
                lijn = aBesteldPlato.ToString().PadLeft(14) + aAnnulPlato.ToString().PadLeft(14) + aGeleverdPlato.ToString().PadLeft(14) + saldo1.ToString().PadLeft(14);
                lijn += Environment.NewLine;
                if (!HorizontaleLijnen()) sb.Append("<:LINES>" + Environment.NewLine);
                sb.Append("<:FONTBOLD>" + Environment.NewLine);
                sb.Append(titelLijn + Environment.NewLine);
                sb.Append("<:FONTNORMAL>" + Environment.NewLine);
                if (!HorizontaleLijnen()) sb.Append("<:NOLINES>" + Environment.NewLine);
                sb.Append(lijn);
                if (txtOpmerking.Text.Length > 0)
                {
                    lijn = "<:FONTBOLD>" + Environment.NewLine;
                    lijn += Environment.NewLine + txtOpmerking.Text;
                }
                sb.Append(lijn);

                toonLijst(sb, hoofding, afstanden, lijstTitel);
            }//einde specifiek boek
            else
            {
                string lijn = "";
                string hoofding ="";
                List<int> afstanden = new List<int>();
                String zoek ="";
                String welkeBoeken = "alle";
                if (rbtSpecifiekeCategorie.Checked) { welkeBoeken = "categorie"; zoek = cmbCategorie.SelectedValue.ToString(); }
                if (rbtSpeciefiekeBoekenlijst.Checked) { welkeBoeken = "boekenlijst"; zoek = cmbGroepBoekInfo.SelectedValue.ToString(); }
                String welkeLijst = "leerlingInfo";
                if (rbtPlatoInfoLijst.Checked) welkeLijst = "platoInfo";
                if (rbtVoorraadLijst.Checked) welkeLijst = "voorraad";
                if (rbtNogTeLeverenLijst.Checked) welkeLijst = "nogTeLeveren";
                String welkeSort = "titel";
                if (rbtSorteerCategorie.Checked) welkeSort = "categorie";
                if (rbtSorteerBoekenLijst.Checked) welkeSort = "boekenlijst";
                BoekenLijst boekenLijst = new BoekenLijst(welkeBoeken,zoek,welkeLijst,welkeSort,chkAlleenPositieveVoorraad.Checked,chkAlleenPositieveNogTeLeveren.Checked,chkNieuwBladPerGroep.Checked,HorizontaleLijnen(),chkExtraTitel.Checked);
                StringBuilder sbb = boekenLijst.getTePrinten();
                if (txtOpmerking.Text.Length > 0)
                {
                    if (chkNieuwBladPerGroep.Checked)
                    {
                        lijn = "<:NEWPAGE>" + Environment.NewLine;
                        lijn += "<:FONTBOLD>" + Environment.NewLine;
                        lijn += Environment.NewLine + txtOpmerking.Text;
                    }
                    else
                    {
                        lijn = "<:FONTBOLD>" + Environment.NewLine;
                        lijn += Environment.NewLine + txtOpmerking.Text;
                    }
                    sbb.Append(lijn);
                }
                //MessageBox.Show(boekenLijst.hulpje);
                toonLijst(sbb, hoofding, boekenLijst.afstanden, boekenLijst.titel);
            }
        }
        #endregion
       

        private void toonLijst(StringBuilder sb,string hoofding,List <int> afstanden, string lijstTitel)
        {

            bool preview = rbtScherm.Checked;
            bool portret = true;
            if (tabControl.SelectedIndex == 0 || tabControl.SelectedIndex == 1 || tabControl.SelectedIndex == 2)portret = false;
            // hoofding
            string ch1 = hoofding;
            string ch2 = "";
            // detail


            //instantiate the object
            CPrintReportStringDemo.CPrintReportString cprs = new CPrintReportStringDemo.CPrintReportString();


            // hoofdtitel
            cprs.TitleFontSize = 12;
            cprs.TitleFontStyle = TitleStyle.Bold;
            cprs.TitleCentered = false;
            string title = lijstTitel+" voor schooljaar " + InstParameters.Default.Schooljaar;
            cprs.DetailFontStyle = FontStyle.Regular;

            // subtitels(<:BL1> betekent laat blanco lijn na titel
            string subTitle = InstParameters.Default.naamSchool + " " + InstParameters.Default.straatSchool + " " + InstParameters.Default.stadSchool;
            cprs.SubTitle2 = "";
            cprs.SubTitle3 = "";
            if (chkExtraTitel.Checked)
                cprs.SubTitle2 = txtExtraTitel.Text;
            if (chkDatum.Checked && !chkExtraTitel.Checked)
                cprs.SubTitle2 = "<:BL1>" + "Datum lijst: " + dtpDatum.Value.ToShortDateString();
            else
                cprs.SubTitle3 = "<:BL1>" + "Datum lijst: " + dtpDatum.Value.ToShortDateString();
           
            cprs.SubTitle4 = "";
            // kader rond rapport en rapportinstellingen
            cprs.DrawBox = true;
            if (chkPaginaNr.Checked) cprs.WithPageNr = true;
            else cprs.WithPageNr = false;
            cprs.PrintFooter = false;

            // marges
            cprs.LeftMarginExtender = MarginExtender.OneQuarterInch; ;// GetMarginExtenders(this.lmExtCB.Text);
            cprs.RightMarginExtender = MarginExtender.OneTenthInch; ;// GetMarginExtenders(this.rmExtCB.Text);
            cprs.TopMarginExtender = MarginExtender.OneHalfInch; ;// GetMarginExtenders(this.tmExtCB.Text);
            cprs.BottomMarginExtender = MarginExtender.OneTenthInch; ;// GetMarginExtenders(this.bmExtCB.Text);

            //rasters
            if (rbtRasterBeide.Checked || rbtRasterHorizontaal.Checked)
                cprs.SepLines = true;
            if (rbtRasterBeide.Checked || rbtRasterVerticaal.Checked)
                cprs.DrawVerticalLines = afstanden;
            // call the print or preview method

            if (preview)
            {
                if (portret)
                    cprs.PrintOrPreview(CharsPerLine.CPL120,
                    sb.ToString(), title, subTitle, PrintPreview.Preview,
                    PrintOrientation.Portrait, ch1, ch2);
                else
                     cprs.PrintOrPreview(CharsPerLine.CPL120,
                     sb.ToString(), title, subTitle, PrintPreview.Preview,
                     PrintOrientation.Landscape, ch1, ch2);
            }
            else
            {
                //if (!this.optPortrait.Checked)
                cprs.PrintOrPreview(CharsPerLine.CPL120,
                sb.ToString(), title, subTitle, PrintPreview.Print,
                PrintOrientation.Portrait, ch1, ch2);
                /*else
                    cprs.PrintOrPreview(CharsPerLine.CPL80,
                    sb.ToString(), title, subTitle, PrintPreview.Print,
                    PrintOrientation.Landscape, ch1, ch2);*/
            }
        }

        

        
       

        

      

       

            
    }
}